package cn.lee.cplibrary.widget.richet.view;

import android.content.Context;
import android.graphics.Color;
import android.util.AttributeSet;
import android.view.LayoutInflater;
import android.view.View;
import android.widget.Button;
import android.widget.LinearLayout;

import androidx.annotation.Nullable;

import cn.lee.cplibrary.R;
import cn.lee.cplibrary.init.CPInitializer;
import cn.lee.cplibrary.widget.richet.bean.FontStyle;

/**
 * Created by awarmisland on 2018/9/10.
 */
public class FontStyleSelectView extends LinearLayout implements View.OnClickListener {
    private Context mContext;
    private FontStyle fontStyle;
    private OnFontStyleSelectListener onFontStyleSelectListener;
    Button btn_bold;
    Button btn_italic;
    Button btn_underline;
    Button btn_streak;

    public FontStyleSelectView(Context context) {
        super(context);
        initView(context);
    }

    public FontStyleSelectView(Context context, @Nullable AttributeSet attrs) {
        super(context, attrs);
        initView(context);
    }

    public FontStyleSelectView(Context context, @Nullable AttributeSet attrs, int defStyleAttr) {
        super(context, attrs, defStyleAttr);
        initView(context);
    }

    private void initView(Context context) {
        CPInitializer.checkInitialization();
        mContext = context;
        View view = LayoutInflater.from(mContext).inflate(R.layout.cp_view_font_style_select, this);
        btn_bold = view.findViewById(R.id.btn_bold);
        btn_italic = view.findViewById(R.id.btn_italic);
        btn_underline = view.findViewById(R.id.btn_underline);
        btn_streak = view.findViewById(R.id.btn_streak);
        btn_bold.setOnClickListener(this);
        btn_italic.setOnClickListener(this);
        btn_underline.setOnClickListener(this);
        btn_streak.setOnClickListener(this);
    }

    @Override
    public void onClick(View view) {
        setFontStyle(view);
    }


    private void setFontStyle(View view) {
        Button button = (Button) view;
        button.setTextColor(Color.BLACK);
        boolean flag = false;
        if (onFontStyleSelectListener != null && fontStyle != null) {
            int id = view.getId();
            if (id == R.id.btn_bold) {
                fontStyle.isBold = !fontStyle.isBold;
                flag = fontStyle.isBold;
                onFontStyleSelectListener.setBold(fontStyle.isBold);
            } else if (id == R.id.btn_italic) {
                fontStyle.isItalic = !fontStyle.isItalic;
                flag = fontStyle.isItalic;
                onFontStyleSelectListener.setItalic(fontStyle.isItalic);
            } else if (id == R.id.btn_underline) {
                fontStyle.isUnderline = !fontStyle.isUnderline;
                flag = fontStyle.isUnderline;
                onFontStyleSelectListener.setUnderline(fontStyle.isUnderline);
            } else if (id == R.id.btn_streak) {
                fontStyle.isStreak = !fontStyle.isStreak;
                flag = fontStyle.isStreak;
                onFontStyleSelectListener.setStreak(fontStyle.isStreak);
            }
            if (flag) {
                button.setTextColor(Color.RED);
            }
        }
    }

    public void initFontStyle(FontStyle fontStyle) {
        this.fontStyle = fontStyle;
        initDefaultStyle();
        if (fontStyle.isBold) {
            btn_bold.setTextColor(Color.RED);
        }
        if (fontStyle.isItalic) {
            btn_italic.setTextColor(Color.RED);
        }
        if (fontStyle.isUnderline) {
            btn_underline.setTextColor(Color.RED);
        }
        if (fontStyle.isStreak) {
            btn_streak.setTextColor(Color.RED);
        }
    }

    private void initDefaultStyle() {
        btn_bold.setTextColor(Color.BLACK);
        btn_italic.setTextColor(Color.BLACK);
        btn_underline.setTextColor(Color.BLACK);
        btn_streak.setTextColor(Color.BLACK);
    }


    public interface OnFontStyleSelectListener {
        void setBold(boolean isBold);

        void setItalic(boolean isItalic);

        void setUnderline(boolean isUnderline);

        void setStreak(boolean isStreak);
    }

    public void setOnFontStyleSelectListener(OnFontStyleSelectListener onFontStyleSelectListener) {
        this.onFontStyleSelectListener = onFontStyleSelectListener;
    }

    public void setFontStyle(FontStyle fontStyle) {
        this.fontStyle = fontStyle;
    }
}
